package com.iris.live.services.data.models;

import com.fasterxml.jackson.annotation.JsonProperty;

import javax.persistence.*;
import java.math.BigDecimal;
import java.sql.Timestamp;
import java.util.Date;

/**
 * Created by xin on 2016/8/14.
 */
@SuppressWarnings("JpaDataSourceORMInspection")
@Entity
@Table(name = "调入付款详单", schema = "sg_lsh", catalog = "")
@IdClass(调入付款详单ModelPK.class)
public class 调入付款详单Model {
    private String 许可;
    private String vin;
    private BigDecimal 调车款项实付金额;
    private Date 调车款项实付日期;
    private Timestamp 最近更新时间;
    private String 上次编辑账户;

    @Id
    @Column(name = "许可")
    public String get许可() {
        return 许可;
    }

    public void set许可(String 许可) {
        this.许可 = 许可;
    }

    @Id
    @Column(name = "VIN")
    public String getVin() {
        return vin;
    }

    public void setVin(String vin) {
        this.vin = vin;
    }

    @Basic
    @Column(name = "调车款项实付金额")
    public BigDecimal get调车款项实付金额() {
        return 调车款项实付金额;
    }

    public void set调车款项实付金额(BigDecimal 调车款项实付金额) {
        this.调车款项实付金额 = 调车款项实付金额;
    }

    @Basic
    @Column(name = "调车款项实付日期")
    public Date get调车款项实付日期() {
        return 调车款项实付日期;
    }

    public void set调车款项实付日期(Date 调车款项实付日期) {
        this.调车款项实付日期 = 调车款项实付日期;
    }

    @Basic
    @Column(name = "最近更新时间")
    public Timestamp get最近更新时间() {
        return 最近更新时间;
    }

    public void set最近更新时间(Timestamp 最近更新时间) {
        this.最近更新时间 = 最近更新时间;
    }

    @Basic
    @Column(name = "上次编辑账户")
    public String get上次编辑账户() {
        return 上次编辑账户;
    }

    public void set上次编辑账户(String 上次编辑账户) {
        this.上次编辑账户 = 上次编辑账户;
    }

    @PrePersist
    @PreUpdate
    public void onPreUpdate() {
        this.set最近更新时间(new Timestamp(System.currentTimeMillis()));
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;

        调入付款详单Model that = (调入付款详单Model) o;

        if (许可 != null ? !许可.equals(that.许可) : that.许可 != null) return false;
        if (vin != null ? !vin.equals(that.vin) : that.vin != null) return false;
        if (调车款项实付金额 != null ? !调车款项实付金额.equals(that.调车款项实付金额) : that.调车款项实付金额 != null) return false;
        if (调车款项实付日期 != null ? !调车款项实付日期.equals(that.调车款项实付日期) : that.调车款项实付日期 != null) return false;
        if (最近更新时间 != null ? !最近更新时间.equals(that.最近更新时间) : that.最近更新时间 != null) return false;
        if (上次编辑账户 != null ? !上次编辑账户.equals(that.上次编辑账户) : that.上次编辑账户 != null) return false;

        return true;
    }

    @Override
    public int hashCode() {
        int result = 许可 != null ? 许可.hashCode() : 0;
        result = 31 * result + (vin != null ? vin.hashCode() : 0);
        result = 31 * result + (调车款项实付金额 != null ? 调车款项实付金额.hashCode() : 0);
        result = 31 * result + (调车款项实付日期 != null ? 调车款项实付日期.hashCode() : 0);
        result = 31 * result + (最近更新时间 != null ? 最近更新时间.hashCode() : 0);
        result = 31 * result + (上次编辑账户 != null ? 上次编辑账户.hashCode() : 0);
        return result;
    }
}
